/*
 * Copyright (c) 2010 Zauber S.A.  -- All rights reserved
 */
package ar.edu.itba.ia2010.geneticos.motor.api.sintaxistree.bitwise.visitors;

import ar.edu.itba.ia2010.geneticos.motor.api.sintaxistree.Expresion;

/**
 * Cuenta la cantidad de elementos de un arbol
 * 
 * @author Juan F. Codagnone
 * @since Apr 3, 2010
 */
public class CountVisitorCallback implements Expresion.VisitorCallback {
    private int i;
    
    /** @see Expresion.VisitorCallback#notify(Expresion) */
    public final Expresion notify(final Expresion e) {
        i++;
        return null;
    }

    /** evalua */
    public final int eval(final Expresion e) {
        e.preorder(this);
        return i;
    }
    
    public final int getI() {
        return i;
    }
    
    /** @see Object#toString() */
    @Override
    public final String toString() {
        return Integer.toString(i);
    }
}
